(function(_self, factory) {
	var nameSpace = 'customBtn_4256535405162351768';
	if (!window[nameSpace] && typeof factory === 'function') {
		var Builder = factory();
		window[nameSpace] = {
			initBtn : {}
		};
		/**
		 * 初始化方法
		 */
		window[nameSpace].init = function(el, options) {
			var identification = Math.floor(Math.round() * 10000000000)
					.toString();
			window[nameSpace].initBtn[identification] = new Builder(el,
					options, _self, identification);
		}
	}
})
(window,function() {
    /**
	 * js,css文件加载方法
	 */
	var dynamicLoading = {
			css : function(path, name, callBk) {
				if (!path || path.length === 0) {
					throw new Error('argument "path" is required !');
				}
				var head = document.getElementsByTagName('head')[0];
				var link = document.createElement('link');
				link.href = path;
				link.rel = 'stylesheet';
				link.type = 'text/css';
				link.setAttribute('data-name', name);
				link.onload = function() {
					callBk();
				}
				head.appendChild(link);
			},
			insertCss : function(innerTexts, name) {
				var head = document.getElementsByTagName('head')[0];
				var style = document.createElement('style');
				style.type = 'text/css';
				style.setAttribute('data-name', name);
				try {
					style.appendChild(document
							.createTextNode(innerTexts));
				} catch (ex) {
					style.styleSheet.cssText = innerTexts;// 针对IE
				}
				head.appendChild(style);
			},
			checkCss : function(name) {
				var styleList = document
						.getElementsByTagName('style');
				for (var i = 0; i < styleList.length; i++) {
					if (styleList[i].getAttribute('data-name') === name)
						return true;
				}
				return false;
			},
			js : function(path, callBk) {
				if (!path || path.length === 0) {
					throw new Error('argument "path" is required !');
				}
				var head = document.getElementsByTagName('head')[0];
				var script = document.createElement('script');
				script.src = path;
				script.type = 'text/javascript';
				script.onload = function() {
					callBk();
				}
				head.appendChild(script);
			},
			checkJs : function(name) {
				var scriptList = document
						.getElementsByTagName('script');
				for (var i = 0; i < scriptList.length; i++) {
					if (scriptList[i].getAttribute('data-name') === name)
						return true;
				}
				return false;
			}
	}
	/**
	 * 定义按钮的构造函数
	 * 
	 * @param {*}
	 *            options
	 * @param {*}
	 *            _self
	 */
	function labelPrintingBtn(el, options, _self,
			identification) {
		var self = this;
		self.window_self = _self;
		self.el = el;
		self.identification = identification;
		// 解析传进来的数据
		self.initParams(options);
		// 处理挂载
		self.initBtn(el);
		// 销毁自己
		self.beforeDestroy = function() {
			self = null;
		}
	}
	/**
	 * 构造函数的原型方法
	 */
	labelPrintingBtn.prototype = {
		initParams : function(options) {
			this.place = options.place;
			this.rowData = options.rowData;
			this.data = options.data;
		},
		initBtn : function(el) {
			/**
			 * 挂载dom初始化处理
			 */
			var innerTexts = '.labelPrintingBtnHandler {'
					+ 'background-color: rgba(0,0,0,0);'
					+ 'font-family: "Ping Fang SC", "Microsoft YaHei", Arial, Helvetica, sans-serif, "SimSun";'
					+ 'cursor: pointer;'
					+ 'white-space : nowrap;'
					+ 'border: 0;'
					+ 'overflow: hidden;'
					+ 'text-overflow: ellipsis;'
					+ '}'
					+ '.labelPrintingBtnBox { box-sizing: border-box; cursor: pointer; outline: none; font-family: inherit; white-space: nowrap;display: inline-block; margin-top: 5px; vertical-align: middle; margin-right: 5px;'
					+ ' background-color: #fff; border: 1px solid #d4d4d4; color: #666;font-size: 14px; line-height: 28px; border-radius: 15px; height: 30px;}'
					+ '.labelPrintingBtnBox:hover{ border-color: #1f85ec; }'
					+ '.labelPrintingBtnRow{color: #1f85ec;}'
					+ '.labelPrintingBtnRow:hover{color : #479bf3}'
					+ '.labelPrintingBtnLi{color : #333}'
					+ '.labelPrintingBtnLi:hover{color : #fff}';
			if (!dynamicLoading.checkCss('labelPrintingBtn')) {
				dynamicLoading.insertCss(innerTexts,
						'labelPrintingBtn');
			}
			// 挂载dom
			this.appendDom(el);
		},
		appendDom : function(el) {
			var self = this;
			var labelPrint = document.createElement('div'), labelPrintToolbar, labelPrintIcon;
			// 对代码片段进行配置
			el.appendChild(labelPrint);
			// 根据不同位置渲染按钮
			switch (this.place) {
			case 'toolbar':
				labelPrint.parentNode.setAttribute('class',
						'labelPrintingBtnBox');
				labelPrint.style.padding = '0 14px';
				// 加入icon
				labelPrintIcon = document.createElement('i');
				labelPrintIcon.setAttribute('class',
						'CAP cap-icon-jiahao');
				labelPrintIcon.style.color = '#C3AF1C';
				labelPrint.appendChild(labelPrintIcon);
				// 加入name信息
				labelPrintToolbar = document
						.createElement('span');
				labelPrintToolbar.innerHTML = this.data
						&& this.data.name ? this.data.name : '';
				labelPrintToolbar.style.paddingLeft = '3px';
				labelPrint.appendChild(labelPrintToolbar);
				break;
			case 'li':
				labelPrint.innerHTML = this.data
						&& this.data.name ? this.data.name : '';
				labelPrint
						.setAttribute('class',
								'labelPrintingBtnLi labelPrintingBtnHandler')
				break;
			case 'row':
				labelPrint.innerHTML = this.data
						&& this.data.name ? this.data.name : '';
				labelPrint
						.setAttribute('class',
								'labelPrintingBtnRow labelPrintingBtnHandler')
				break;
			default:
			}
			labelPrint.onclick = function() {
				switch (self.place) {
				case 'toolbar':
					// 点击执行对应的操作
					self.implementClick();
					break;
				case 'li':
				case 'row':
					// 点击执行对应的操作
					self.implementClick(self.rowData);
					break;
				default:
				}

			}
			// 阻止数据污染
			labelPrint.parentNode.onclick = function(e) {
				e.stopPropagation();
			}
		},
		// 执行点击事件
		implementClick : function(rowData) {
        	// 实际的业务代码方法
        	var dialog = $.dialog({
                id: 'dialog',
                url: self.origin+'/seeyon/apps_res/cap/ioCreate/html/ioCreate.html',
                width: 500,
                height: 160,
                title: 'IO号生成',
                type : 'panel',
                transParams : {},
                checkMax:true,
            closeParam:{
                'show':false,
                autoClose:false,
                handler:function(){
                }
            },
            buttons: [{
                text: "确定",
                handler: function () {
                   var returnData = dialog.getReturnValue();
	               if(returnData!=null){ 
	            	 getCtpTop().processBar1=getCtpTop().$.progressBar({text:"IO号生成中......"});
	          		 setTimeout(function(){
	          			 $.ajax({
		     				url:'/seeyon/kkMeetingController.do?method=ioCreate',
		     				async:false,
		     				cache:false,
		     				type:'post',
		     				data:{"startIO":returnData.startIO,"endIO":returnData.endIO,"companyCode":returnData.companyCode},
		     				dataType:'text',
		     				success:function(result){
		     					if(getCtpTop().processBar1){
		     						getCtpTop().processBar1.close();
		     					}
		     					if(result=="success"){
		     						$.alert("IO号已成功创建！");
		     						dialog.close()
		     					}else{
		     						$.alert(result);
		     					}
		     				},
		     				error:function(msg){
		     					if(getCtpTop().processBar1){
		     						getCtpTop().processBar1.close();
		     					}
		     					alert('IO号生成异常请联系管理员！');
		     				}
		     		   });
	          		 },1);
	               }
                }
             }, {
                text: "取消",
                handler: function () {
	                dialog.close()
                }
                }]
            });
		},
		// 点击逻辑执行
		handlerLogic : function(rowData) {
			$.alert(JSON.stringify(rowData));
		}
	};
	/**
	 * 返回值
	 */
	return labelPrintingBtn;
});